/*!
 * 文件名称： driver_can.h
 * 描    述： driver can 头文件
 * 版本：     2023-12-03, V1.0
*/

/*
* GD32F303东方红开发板V1.0
* 淘宝商城：   https://juwo.taobao.com
* 技术交流：   https://www.gd32bbs.com/ask/
* 视频学习：   https://space.bilibili.com/475462605
* 微信公众号： gd32bbs
* Copyright    苏州聚沃电子科技有限公司
* 版权所有，盗版必究。
*/
#ifndef DRIVER_CAN_H
#define DRIVER_CAN_H
#include "driver_public.h"


/* select CAN baudrate */
/* 1MBps */
#define CAN_BAUDRATE  1000
/* 500kBps */
/* #define CAN_BAUDRATE  500 */
/* 250kBps */
/* #define CAN_BAUDRATE  250 */
/* 125kBps */
/* #define CAN_BAUDRATE  125 */
/* 100kBps */ 
/* #define CAN_BAUDRATE  100 */
/* 50kBps */ 
/* #define CAN_BAUDRATE  50 */
/* 20kBps */ 
/* #define CAN_BAUDRATE  20 */

typedef struct __typdef_can_general
{
	uint32_t can_port;
	rcu_periph_enum rcu_can;		//ADC时钟口
	rcu_periph_enum rcu_IO_port;//IO口时钟
	uint32_t IO_port;							//IO port
	uint32_t pin_tx;								//tx pin
	uint32_t pin_rx;								//rx pin
	uint32_t can_remap;   //是否使用IO remap
	uint32_t gpio_speed;				//IO 速率
	can_parameter_struct can_parameter; //CAN初始化参数结构体
	can_filter_parameter_struct can_filter; //CAN过滤器结构体
	FlagStatus can_rx_use_interrupt; //是否使用接收中断
}typdef_can_general;

void driver_can_config(typdef_can_general can_general);
void driver_can_transmit(typdef_can_general can_general,can_trasnmit_message_struct *transmit_message);

#endif /* DRIVER_CAN_H*/
